package nuaa.service;

import nuaa.dao.IGroupDao;
import nuaa.domain.Group;
import nuaa.domain.OrdinaryUser;
import nuaa.util.UtilSqlSession;
import org.aspectj.weaver.ast.Or;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class GroupService {

    /*创建groupDao对象*/
    private IGroupDao groupDao= UtilSqlSession.getSqlSession().getMapper(IGroupDao.class);

    public GroupService() throws IOException {
    }

    /**
     * 根据groupId查找到队伍对象
     * @param groupId
     * @return
     */
    public Group findByGroupId(Integer groupId){
        Group group = groupDao.findByGroupId(groupId);
        return group;
    }

    public List<OrdinaryUser> findAllUsers(Integer groupId) {
        //1.调用dao层的方法，返回结果
        List<OrdinaryUser> users=groupDao.findAllUsers(groupId);
        //2.返回
        return users;
    }

    /**
     * 向数据库表中插入新的队伍，并提交
     * @param group
     */
    public void addNewGroup(Group group) throws IOException {
        groupDao.addNewGroup(group);
        UtilSqlSession.getSqlSession().commit();
    }

    /**
     * 完成队伍创建
     * @param group
     * @param request
     * @param response
     * @throws IOException
     */
    public void finishGroup(Group group,HttpServletRequest request, HttpServletResponse response) throws IOException {
        //获取当前用户的id，赋值于group中，得到完整的group
        OrdinaryUser user = (OrdinaryUser) request.getSession().getAttribute("user");
        Integer userId = user.getUserId();
        group.setLeaderId(userId);
        //2.写入到group数据表中，并提交；当前用户的groupId设置为当前队伍的Id
        //首页和队伍页和个人中心页也应当进行更新工作，找最早的
        groupDao.addNewGroup(group);
        UtilSqlSession.getSqlSession().commit();

        //3.写入到userandgroup数据库，调用其中的Service方法，直接提交
        new UserAndGroupService().add(userId,group.getGroupId());
        //4.队伍的当前的人数设为 1
        //队伍的当前人数也是一个属性，但是不必加入到数据库中
        group.setCurrentNumberOfPeople(1);
    }

    public void deleteGroupByGroupId(Integer groupId) throws IOException {
        //调用dao层方法删除数据表中记录
        groupDao.deleteGroupByGroupId(groupId);
        //立刻提交事务
        UtilSqlSession.getSqlSession().commit();
    }

    /**
     * 根据groupId获取destinations对象
     * @param groupId
     */
    public String findDestinationsByGroupId(Integer groupId){
        String destinations=groupDao.findDestinationsByGroupId(groupId);
        return destinations;
    }
}
